#include<iostream>
#include<algorithm>
using namespace std;

int a[10010];

int main() {
    int n, m;
    cin >> n >> m;
    for(int i=0; i<n; i++)  cin >> a[i];
    while(m--) {
        /**
         * 1. 从后往前找到第一个下降点
         * 2. 从后往前找到第一个比a[i]大的数
         * 3. 交换a[i]和a[j]
         * 4. 将a[i]后面的数逆序
        */
        int i = n-2;
        while(i >=0 && a[i] >= a[i+1]) i--; // 找到第一个下降点
        if(i < 0) break;
        
        int j = n-1;
        while(a[j] <= a[i]) j--; // 找到第一个比a[i]大的数
        swap(a[i], a[j]);
        reverse(a+i+1, a+n); // 将a[i]后面的数逆序
    }

    for(int i=0; i<n; i++) {
        cout << a[i] << " ";
    }
    return 0;
} 